package cn.edu.wynu;

import java.util.Random;
import java.util.Scanner;

public class Test06 {
    public static void main(String[] args) {
        // 案例六：抢红包
        // 需求：一个大V直播时发起了抢红包活动，分别有:9、666、188、520、99999五个红包。请模拟粉丝来抽奖，按照先来先得，随机抽取，抽完即止。
        // 注意：一个红包只能被抽一次，先抽或后抽哪一个红包是随机的。

        int[] moneys = {9,666,188,520,99999};
        start(moneys);
    }

    // 方案一：写个for循环控制抽奖5次，每次抽奖，都从数组中随机找出一个金额，
    // 如果该金额不是0，则代表抽中，接着用0替换该位置处的金额，然后继续下一个粉丝的抽奖;
    // 如果抽中的金额发现是0，代表该位置处的红包之前被别人抽走了，则从新从数组中随机找出一个金额，继续判断!
    // 直至抽中的金额不是0!
    public static void start(int[] moneys) {
        // moneys = [9,666,188,520,99999];

        Scanner sc = new Scanner(System.in);
        Random r = new Random();
        // 1.定义一个for循环，控制抽奖5次
        for (int i = 1; i <= 5; i++) {
            // 2.提升抽奖
            System.out.println("请输入“你最帅”进行抽奖：");
            sc.next(); // 等待用户输入内容，然后回车进行下一步操作

            // 3.为当前抽奖人员找一个随机的红包
            while (true) {
                int index = r.nextInt(moneys.length); // 0~4
                int money = moneys[index];

                // 4.判断当前红包是否已经被抽过，也就是是否为0
                if (money != 0) {
                    System.out.println("恭喜你，获得" + money + "元！");
                    moneys[index] = 0; // 将当前红包金额设置为0，表示已经被抽过了
                    break; // 结束此次抽奖
                }
            }
        }
        System.out.println("活动结束，红包已全部发放完毕！");
    }

    // 方案二：先把数组里面的5个金额打乱顺序，打乱后的顺序就认为是中奖顺序;
    // 接着，写个for循环，执行5次，每次都提示抽奖;
    // 每次抽奖，都依次取出数组中的每个位置处的金额作为中奖金额即可。
}
